import re
import urllib.request
import urllib.parse
import socket
import sys
import os

socket.setdefaulttimeout(30)
sys.setrecursionlimit(240000)


# 正则判断功能,获取正则结果
# res 正则语句
# data 获取数据的内容
def regetdata(res, data):
    reObject = re.compile(res)
    result = reObject.findall(data)
    return result


# 获取html内容
# 模拟浏览器获取数据
def gethtmllikechorme(url):
    try:
        req = urllib.request.Request(url, headers={
            'Connection': 'Keep-Alive',
            'Accept': 'text/html, application/xhtml+xml, */*',
            'Accept-Language': 'en-US,en;q=0.8,zh-Hans-CN;q=0.5,zh-Hans;q=0.3',
            'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko'
        })
        oper = urllib.request.urlopen(req)
        html = oper.read()
        # 根据网页的编码再进行转码，并不一定是utf-8
        # html = html.decode('utf-8')
        return html
    except Exception as e:
        print(e)
        return 1


# 下载文件
# url 网络资源地址
# file 文件名称,需要带上文件类型
# filepath 文件保存地址
def downloaddata(url, fielname, filepath):
    print("正在下载图片 ", url)
    imgname = fielname
    local = os.path.join(filepath, filepath)
    try:
        opener = urllib.request.URLopener()
        opener.addheader('User-Agent', 'whatever')
        opener.retrieve(url, local, cbk)
        # 下载成功
        return 0
    except Exception as e:
        # 下载出错
        print(e)
        return 1


# 文件下载进度
def cbk(a, b, c):
    '''回调函数
    @a: 已经下载的数据块
    @b: 数据块的大小
    @c: 远程文件的大小
    '''

    per = 100.0 * a * b / c
    if per > 100:
        per = 100
    print('%.2f' % per)


# 文件操作功能
# 1.创建文件
def createFile(filename):
    file = open(filename, 'w')
    file.close()
    print("创建数字文件结束")


# 2.读取文件
# 需要带上文件类型后缀
def readFile(filename):
    file = open(filename, 'r')
    contant = file.read()
    file.close()
    return contant


# 3.写入文件
def writeFile(fielname, content):
    file = open(fielname, 'w')
    file.write(content)
    file.close()


# 创建文件夹
def create_direction(file_path):
    os.makedirs(file_path)
    print('创建文件夹')
